\section{Related Work}
\label{section:related_work}

% Several works focus on making existing software engineering techniques
% ``variability aware'' so that they are applicable on the level of the whole
% product line rather than individual products -- see~\cite{thum12} for a survey.
% Examples include model checking~\cite{classen10}, type
% checking~\cite{Kastner:Apel:Thum:Saake:2012} and testing~\cite{Kastner12}. Our
% approach shares the goal of lifting operations to the product line-level, but
% focuses specifically on model transformations.


There is extensive work on adapting software engineering techniques to
product lines in order to avoid having to explicitly manipulate individual
products~\cite{thum12}. Lifting has been applied to model
checking~\cite{classen10},  type checking~\cite{Kastner:Apel:Thum:Saake:2012},
testing~\cite{Kastner12}, etc. Our work fits in this category, focusing
on lifting transformations.

% Numerous product line-level model transformations allow to derive individual
% products from a product line~\cite{Czarnecki:Antkiewicz:2005,garces07,haugen08},
% merge products and feature
% models~\cite{Acher:Collet:Lahire:France:2010,Classen:Heymans:Tun:Nuseibeh:2009,rubin12},
% refine feature models~\cite{czarn04} and more.  Borba et
% al.~\cite{Borba:Teixeira:Gheyi:2012} organize these works, formally defining a
% theory of product line refinements as well as a catalog of commonly used
% refinements.  Our work differs from these as we focus on lifting existing
% transformations from the product to a product line-level rather then
% hand-crafting transformations for product-line specific purposes.

The combination of product lines and model transformations has been extensively
studied from the perspective of using transformations for configuring and
refining product
lines~\cite{Czarnecki:Antkiewicz:2005,garces07,haugen08,czarn04}, and merging
products and feature
models~\cite{Acher:Collet:Lahire:France:2010,Classen:Heymans:Tun:Nuseibeh:2009,rubin12},
A theory of product line refinement along with a classification of commonly used
refinement approaches is presented in~\cite{Borba:Teixeira:Gheyi:2012}.
Transformation lifting differs from these works because it is about adapting
existing product-level transformations to the level of entire product lines, as
opposed to creating transformations specifically for product lines.


% Schulze et al.~\cite{schulze12} propose a variant-preserving refactoring
% approach for feature-oriented product lines~\cite{Apel:Kastner:2009}, aimed to
% improve the structure of source code.  The authors show how to extend
% traditional approaches to product lines created using feature-oriented
% programming.  Instead, we  focus on \emph{annotative} product line
% representations \emph{realized with models}, and is not limited to just
% structural improvement.

Variant-preserving refactoring, aimed to improve the structure of source code,
is presented in~\cite{schulze12}, for feature-oriented product
lines~\cite{Apel:Kastner:2009}. This is accomplished by extending conventional
refactoring with feature-oriented programming. Our lifting approach focuses on
{\em annotative, model-based} product lines instead, and is not limited to
structural improvement.


% Product line evolution approaches, e.g., \cite{neves11} and \cite{seidl12},
% focus on studying and supporting scenarios such as splitting, merging, adding or
% removing features and their implementations.  Several such approaches are based
% on providing templates of ``safe'' evolution which are to be applied manually.
% Our focus is rather on transformations that preserve the original set of
% features, while modifying the structure and the abstraction level of their
% implementations, and we do so automatically.

Approaches to product line evolution~\cite{neves11,seidl12} focus on scenarios
such as merging and splitting product lines, and changing the feature set or the
domain model. The aim is usually to create templates for manually evolving the
product line in a safe way. Our approach is to automatically evolve product
lines by lifting product-level translation transformations, such as
\gmtoautosar. Safety is thus ensured by reasoning about the properties of the
transformation at the product level~\cite{Lucio:10,LOH+14,selimICGT2014}.




